#ifndef __BONUS_H__
#define __BONUS_H__

#include <iostream>
#include "string.h"
#include <ctime>

#include "Posicionable.h"

class Bonus  : public ObjetoModelo {
	
private:
	string tipo;

public:

	Bonus(string t){
		this->tipo = t;
		this->setNombreClase("Bonus");
	}
	
	Bonus(){
		this->tipo = "";
		this->setNombreClase("Bonus");
	}


	string getTipo(){
		return this->tipo;
	}
	
	void setTipo(string t){
		this->tipo = t;
	}


	void agregarAtributo(string n, string v) throw(...) {
		if ("tipo" == n){
			this->setTipo(v);
		} else{
			throw new AtributoDesconocidoException(n);
		}
	}


	// TODO (pablo): hacer que estos dos metodos sean virtuales y hacer q chequearBonus funcione con polimorfismo.

	/*
	 * Metodo que aplica el efecto del bonus al pacman correspondiente dependiendo del tipo de bonus
	 * que sea.
	 * @parametro afectado es el pacman que sera afectado por el bonus
	 */
	void aplicarEfecto(Posicionable* afectado) {} // = 0;


	/*
	 * Metodo que devuelte true si el efecto del bonus se aplica al Pacman que lo hay comido y false en 
	 * caso contrario.
	 * Sobreescribir en aquellos Bonus que tengan que devolver false.
	 */
	bool seAplicaAComedor() {} // = 0;

};

#endif 